﻿using BaseicModuleExpression.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks;

namespace BaseicModuleExpression.Module
{
    public class ExpreesionSql
    {
        public ExpreesionSql() { }

        public void Run() 
        {
            #region 表达式目录树解析sql
            {
                //ExpressionVisitor访问者类，Visit是个入口，解读表达式的入口
                //1 lambda会区分参数和方法体，调度到更专业访问(处理)方法
                //2 根据表达式的类型，将表达式调度到此类中更专用的访问方法之一的表达式
                //默认的专业处理方法就是按照旧的模式产生一个新的
                //也可以自行扩展，把一些解读操作进行变化
                //表达式目录树是个二叉树，visit做的事儿就是一层层的解析下去，一直到最终的叶节点
                Expression<Func<User, bool>> expression = x => x.Name.Contains("xx") && x.Age > 0;
                
            }
            #endregion
        }
    }
}
